from package_unittest.login import login
import pytest

"""
fixture装饰器:
fixture(scope,autouse,params,ids,name):
    autouse : 代表是否自动运行 ，若此参数不加或者设置False ,代表不会自动运行。
    scope : 代表当前标注的函数在测试用例中运行的级别 ，它的值有 ：session,package,module ,class ,function .
    params : 数据参数化
    ids : 它是给生成结果的fixture进行重命名 ，使用它的前提是必须要有params
"""

cases = [
    ('输入正确的用户名和正确的密码登录',0,'admin','123456'),
    ('输入正确的用户名和错误的密码登录',3,'admin','1234567'),
    ('输入空的密码登录',2,'admin',''),
    ('输入空的用户名登录',1,'','123456')
]



@pytest.fixture(params=cases,ids=[case[0] for case in cases ])
def fixture_demo(request):
    print("=============初始化方法==============")
    print("接受进来的数据:{}".format(request.param))
    yield request.param
    print("=========清除方法================")




class Testogin():

    # case1 : 输入正确的用户名和正确的密码进行登录
    def test_login_success(self,fixture_demo):
        print("1")
        expect_result = fixture_demo[1]
        username = fixture_demo[2]
        password = fixture_demo[3]
        actual_result = login(username,password).get('code')
        assert expect_result == actual_result


if __name__ == '__main__':
    pytest.main(['test02_pytest_allure_class.py','-k',"login"])